import featuretools as ft
import numpy as np
import pandas as pd

train = pd.read_csv("train.csv")
test = pd.read_csv("test.csv")

# 首先，我们将Item_Outlet_Sales存储在变量sales中，id特征存储在test_Item_Identifier和test_Outlet_Identifier中。

test_Item_Identifier = test["Item_Identifier"]
test_outlet_Identifier=test["Outlet_Identifier"]
sales = train["Item_Identifier"]
train.drop(["Item_Outlet_Identifier"]，axis=1,inplace=True)

#接着，我们将训练集和测试集组合起来，避免执行两次相同步骤的麻烦。
combi = train.append(test,ignore_index=True)

#检查一下数据集中的缺失值。
combi.isnull().sum()

# 变量Item_Weight 和 Outlet_size中有非常多的缺失值，我们快速处理一下：
combi["Item_Weight"].fillna(combi["Item_Weight"].mean(),inplace=True)
combi["Outlet_size"].fillna("missing",inplace=True)

#使用Featuretools实现特征工程
#现在，我们可以开始使用Featuretools来实现自动化特征工程了！ 数据集中必须具有唯一标识符的特征（我们的数据集现在没有任何这样的特征）。 因此，我们将为组合数据集创建一个唯一ID。 如果您注意到，数据中有两个ID -一个用于商品，另一个用于门店。 因此，简单地连接两者就可以为我们提供唯一的ID。
combi["id"]=combi["Item_Identifier"]+combi["Outlet_Identifier"]
combi.drop(["Item_Identifier"],axis=1,inplace=True)

#请注意，由于不再需要特征Item_Identifier，我删除了这个特征。但是，保留了特征Outlet_Identifier，因为我打算稍后使用它。

# 在继续之前，我们将创建一个特征EntitySet，它是一种包含多个数据框及其之间关系的结构。那么，让我们创建一个EntitySet并将数据框组合添加进去。

https://www.jiqizhixin.com/articles/2018-11-02-7